using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._Raster._MosaicDataset
{
    /// <summary>
    /// <para>Delete Mosaic Dataset</para>
    /// <para>Deletes a mosaic dataset, its overviews, and its item cache from disk.</para>
    /// <para>从磁盘中删除镶嵌数据集、其概视图及其项目缓存。</para>
    /// </summary>    
    [DisplayName("Delete Mosaic Dataset")]
    public class DeleteMosaicDataset : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public DeleteMosaicDataset()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_mosaic_dataset">
        /// <para>Mosaic Dataset</para>
        /// <para>The mosaic dataset that you want to delete.</para>
        /// <para>要删除的镶嵌数据集。</para>
        /// </param>
        public DeleteMosaicDataset(object _in_mosaic_dataset)
        {
            this._in_mosaic_dataset = _in_mosaic_dataset;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Delete Mosaic Dataset";

        public override string CallName => "management.DeleteMosaicDataset";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_mosaic_dataset, _delete_overview_images.GetGPValue(), _delete_item_cache.GetGPValue(), _out_results];

        /// <summary>
        /// <para>Mosaic Dataset</para>
        /// <para>The mosaic dataset that you want to delete.</para>
        /// <para>要删除的镶嵌数据集。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Mosaic Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_mosaic_dataset { get; set; }


        /// <summary>
        /// <para>Delete Overview Images</para>
        /// <para><xdoc>
        ///   <para>Deletes all overviews associated with the mosaic dataset.
        ///   <bulletList>
        ///     <bullet_item>Checked—Delete the overviews associated with the mosaic dataset. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Do not delete the overviews.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>删除与镶嵌数据集关联的所有概视图。
        ///   <bulletList>
        ///     <bullet_item>选中 - 删除与镶嵌数据集关联的概视图。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中 （Unchecked） - 不删除概览。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Delete Overview Images")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _delete_overview_images_value _delete_overview_images { get; set; } = _delete_overview_images_value._true;

        public enum _delete_overview_images_value
        {
            /// <summary>
            /// <para>DELETE_OVERVIEW_IMAGES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DELETE_OVERVIEW_IMAGES")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_DELETE_OVERVIEW_IMAGES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_DELETE_OVERVIEW_IMAGES")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Delete Item Cache</para>
        /// <para><xdoc>
        ///   <para>Delete the item cache associated with the mosaic dataset.
        ///   <bulletList>
        ///     <bullet_item>Checked—Delete the item cache associated with the mosaic dataset. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Do not delete the item cache.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>删除与镶嵌数据集关联的项目缓存。
        ///   <bulletList>
        ///     <bullet_item>选中 - 删除与镶嵌数据集关联的项目缓存。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中 （Unchecked） - 不删除项目缓存。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Delete Item Cache")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _delete_item_cache_value _delete_item_cache { get; set; } = _delete_item_cache_value._true;

        public enum _delete_item_cache_value
        {
            /// <summary>
            /// <para>DELETE_ITEM_CACHE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DELETE_ITEM_CACHE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_DELETE_ITEM_CACHE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_DELETE_ITEM_CACHE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Delete Succeeded</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Delete Succeeded")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_results { get; set; }


        public DeleteMosaicDataset SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}